/*
 * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#pragma once

#ifndef _MY_SYSTEM_PARAM_H
#define _MY_SYSTEM_PARAM_H

#include "sdkconfig.h"
#include "driver/gpio.h"
#include "freertos/queue.h" 


typedef enum{
    NO_TYPE= 0,
    KEY_TYPE,
    ROTATION_TYPE,
    BLE_TYPE,
    WIFI_TYPE,
	NTC_TYPE,
}MAIN_MSG_TYPE_e;

//----------key_msg------------
typedef enum {
    KEY_NONE          = 0, /**< Button not triggered */
    KEY_SHORT_RELEASE = 1, /**< The button was short pressed */
    KEY_LONG_PRESS    = 2, /**< The button was long pressed */
    KEY_LONG_RELEASE  = 3, /**< Press and hold the button to lift */
} key_event_t;

typedef enum {
    ROTATION1_KEY = 0,    // 第一个旋钮对应的按键
    ROTATION2_KEY = 1,    // 第二个旋钮对应的按键
}KEY_INDEX_e;

typedef struct{
    KEY_INDEX_e id;      // 一共两个按键，根据 ID号，区分是哪个按键
    key_event_t event;     //
}key_msg_t;
//----------key_msg------------

//--------旋钮----------------------

typedef enum {
    ROTATION1 = 0,    // 第一个旋钮
    ROTATION2 = 1,    // 第二个旋钮
}ROTATION_INDEX_e;

typedef enum {
    ROTA_POSITIVE = 0,   // 正向旋转
    ROTA_NEGATIVE= 1,    // 反向旋转
}ROTATION_event_e;

typedef struct{
    ROTATION_INDEX_e id;  // 一共两个按键，根据 ID号，区分是哪个按键
    ROTATION_event_e event;
}rotation_msg_t;


typedef struct 
{
    MAIN_MSG_TYPE_e type;
	union 
	{
		key_msg_t key;
		rotation_msg_t rota;

		uint8_t reser[64];
		/* data */
	}data;
	
    /* data */
}MAIN_MSG_t;

extern QueueHandle_t my_main_queue;


void my_system_init(void);

#endif